/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


package Session;

import Entity.SinistreHabitat;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.math.BigInteger;
/**
 *
 * @author guillaumediliberatore
 */
@Stateless
public class SinistreHabitatSession implements SinistreHabitatSessionLocal {
    @javax.persistence.PersistenceContext(unitName = "Assurance-ejbPU")
    private EntityManager em;
    
    @Override
    public boolean declarer(String numero, String date, String adresse,  String description, String incident){
        if(numero != null && !numero.equals("") ) {
            SinistreHabitat c = new SinistreHabitat(numero, date, adresse, description, incident);
            c.setStatut("redacteur");
            em.persist(c);
            return true;
        }        
        return false;
    }
    
    
    //récupération des sinistres pour le rédacteur
    @Override
    public List recupSinistreRedac(){
        List<SinistreHabitat> liste= null;
        Query recup = em.createNamedQuery("SinistreHabitat.findByStatut");
        recup.setParameter("statut", "redacteur");
        liste=recup.getResultList();
        return liste;
    }
    
        @Override
    public List recupSinistreRedac2(){
        List<SinistreHabitat> liste= null;
        Query recup = em.createNamedQuery("SinistreHabitat.findByStatut");
        recup.setParameter("statut", "redacteur2");
        liste=recup.getResultList();
        return liste;
    }
    
        @Override
    public List recupSinistreExpert(){
        List<SinistreHabitat> liste= null;
        Query recup = em.createNamedQuery("SinistreHabitat.findByStatut");
        recup.setParameter("statut", "expert");
        liste=recup.getResultList();
        return liste;
    }
    
    //retransmission après traitement 1 du rédacteur
    @Override
    public void traitementRedacteur(String numRedacteur, String statut, String numero){
        Query find = em.createNamedQuery("SinistreHabitat.findByNumsinistrehabitat");
        int num = Integer.parseInt(numero);
        Integer numerosinistre = (Integer) num;        
        find.setParameter("numsinistrehabitat", numerosinistre);

        SinistreHabitat s = (SinistreHabitat) find.getSingleResult();

        s.setNumRedacteur(numRedacteur);
        
        s.setStatut(statut);

        em.persist(s);

        
    }
    
       @Override
        public void traitementRedacteur2(String montant, String numero){
        Query find = em.createNamedQuery("SinistreHabitat.findByNumsinistrehabitat");

        int num = Integer.parseInt(numero);

        Integer numerosinistre = (Integer) num;        

        find.setParameter("numsinistrehabitat", numerosinistre);

        SinistreHabitat s = (SinistreHabitat) find.getSingleResult();
        BigInteger montantr = new BigInteger(montant);
        s.setMontantremboursement(montantr);
        s.setStatut("done");

        em.persist(s);

        
    }
    
    @Override
    public void traitementExpert(String numExpert, String statut, String numero){
        Query find = em.createNamedQuery("SinistreHabitat.findByNumsinistrehabitat");
        int num = Integer.parseInt(numero);
        Integer numerosinistre = (Integer) num;
        find.setParameter("numsinistrehabitat", numerosinistre);
        SinistreHabitat s = (SinistreHabitat) find.getSingleResult();
        s.setNumExpert(numExpert);
        s.setStatut(statut);
        em.persist(s);
        
    }
    
    @Override
    public void envoiExpertRedac(String montant, String numero){
        Query find = em.createNamedQuery("SinistreHabitat.findByNumsinistrehabitat");
        int num = Integer.parseInt(numero);
        Integer numerosinistre = (Integer) num;
        find.setParameter("numsinistrehabitat", numerosinistre);
        SinistreHabitat s = (SinistreHabitat) find.getSingleResult();
        s.setStatut("redacteur2");
        BigInteger montantdegat = new BigInteger(montant);
        s.setMontantdegat(montantdegat);
        em.persist(s);
    }

}
